<!DOCTYPE html>
<!--
     SPDX-License-Identifier: CC-BY-SA-4.0
     SPDX-FileCopyrightText: 2020 seL4 Project a Series of LF Projects, LLC.
-->
<!-- Page last generated 2025-02-20 03:16:15 +0000 -->
<html lang="en">
  <head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title>How to: A quick solutions guide | seL4 docs</title>

    <!-- Our stylesheet and theme stylesheet.  Contains bootstrap. -->
    <link rel="stylesheet" href="/assets/css/style.css" type="text/css">
    <!-- Font awesome -->
    <link href="https://use.fontawesome.com/releases/v5.0.8/css/all.css" rel="stylesheet">
    <link href="https://fonts.googleapis.com/css2?family=Roboto&display=swap" rel="stylesheet">
    <!-- Pygments syntax highlighting  -->
    <link rel="stylesheet" href="/assets/css/highlighting/trac.css" type="text/css">
    <link rel="icon" type="image/x-icon" href="/assets/favicon.ico"><script defer data-domain="docs.sel4.systems"
	    src="https://analytics.sel4.systems/js/script.js"></script></head>

  <body class="container-fluid">

    



<header>
  <ul class="row menu">
    <li class="col-xs-12 col-md-2" >
            <a href="https://sel4.systems" class="skip-icon">
              <img class="img-responsive" src="/assets/logo-text-white.svg" alt="seL4 logo" />
            </a>
    </li>
    <li class="col-xs-12 col-md-10 menu">
      <nav aria-label="Banner links">
        <h2><a href="/Resources" />Resources</h2>
        <h2><a href="/processes" />Contributing</a></h2>
        <h2><a href="/projects" />Projects</h2>
        <h2><a href="/Tutorials" />Tutorials</h2>
        <iframe title="DuckDuckGo search bar" src="https://duckduckgo.com/search.html?site=docs.sel4.systems&prefill=Search%20sel4.systems" style="overflow:hidden;margin-bottom:10px; padding:0;height:40px;float:right;border-width: 0px"></iframe>
      </nav>
    </li>
  </ul>
  <div class="clear"></div>
  
<div class="breadcrumbs bootstrap hidden-sm-down">
  <nav class="sel-breadcrumb" aria-label="Breadcrumb" >
    <ol class=" list-unstyled" vocab="http://schema.org/" typeof="BreadcrumbList">
      
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/">
              <span property="name"><b>seL4 Docs</b></span>
            </a>
            <meta property="position" content="1" />
        </li>
      
        

        

        <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <a property="item" typeof="WebPage" href="/Tutorials/">
              <span property="name"><b>Tutorials</b></span>
            </a>
            <meta property="position" content="2" />
        </li>
      
        

        
          <li class="breadcrumb-item" property="itemListElement" typeof="ListItem">
            <span property="name">How to: A quick solutions guide</span>
            <meta property="position" content="3" /></li>
          
    </ol>
  </nav>
  <nav class="sel-version" aria-label="Current Versions">
    <ol class="list-unstyled">
      <li class="list-unstyled text-right" style="margin-left:auto; padding:0rem 0rem;">
        Current versions:</li>
      <li class="list-unstyled text-right">
      <a href="/releases/sel4/13.0.0"><b>seL4-13.0.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/microkit/1.4.1"><b>microkit-1.4.1</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/camkes/camkes-3.11.0"><b>camkes-3.11.0</b></a></li>
      <li class="list-unstyled text-right">
      <a href="/releases/capdl/0.3.0"><b>capDL-0.3.0</b></a></li>
      </ol>
  </nav>
  <div class='clear'></div>
</div>


</header>

    <main>
      <div class="row">
  <div class="hidden-xs col-sm-4 col-md-3 col-lg-2">
    

<div class="sidebar">
  <ul class="nav nav-sidebar tutorial-sidebar">
    <li class="nav-section">Getting started</li>
      <li><a href="/Tutorials/">Overview</a></li>
      <li><a href="/Tutorials/pathways">Tutorial pathways</a></li>
    <li class="nav-section">seL4</li>
      <li><a href="/Tutorials/setting-up">Setting up your machine</a></li>
      <li><a href="/Tutorials/get-the-tutorials">Getting the tutorials</a></li>
      <li><a href="/Tutorials/hello-world">Hello world</a></li>
      <li><a href="/Tutorials/capabilities">Capabilities</a></li>
      <li><a href="/Tutorials/untyped">Untyped</a></li>
      <li><a href="/Tutorials/mapping">Mapping</a></li>
      <li><a href="/Tutorials/threads">Threads</a></li>
      <li><a href="/Tutorials/ipc">IPC</a></li>
      <li><a href="/Tutorials/notifications">Notifications</a></li>
      <li><a href="/Tutorials/interrupts">Interrupts</a></li>
      <li><a href="/Tutorials/fault-handlers">Fault handling</a></li>
      <li><a href="/Tutorials/mcs">MCS extensions</a></li>
    <li class="nav-section">C Libraries</li>
      <li><a href="/Tutorials/libraries-1">Initialisation &amp; threading</a></li>
      <li><a href="/Tutorials/libraries-2">IPC</a></li>
      <li><a href="/Tutorials/libraries-3">Processes &amp; Elf loading</a></li>
      <li><a href="/Tutorials/libraries-4">Timer</a></li>
    <li class="nav-section">Microkit</li>
      <li><a href="https://trustworthy.systems/projects/microkit/tutorial/">Tutorial</a></li>
    <li class="nav-section">CAmkES</li>
      <li><a href="/Tutorials/hello-camkes-0">Hello CAmkES</a></li>
      <li><a href="/Tutorials/hello-camkes-1">Introduction to CAmkES</a></li>
      <li><a href="/Tutorials/hello-camkes-2">Events in CAmkES</a></li>
      <li><a href="/Tutorials/hello-camkes-timer">CAmkES timer tutorial</a></li>
      <li><a href="/Tutorials/camkes-vm-linux">CAmkES VM</a></li>
      <li><a href="/Tutorials/camkes-vm-crossvm">CAmkES cross-VM connectors</a></li>
    <li class="nav-section">Rust</li>
      <li><a href="https://github.com/seL4/rust-sel4">GitHub</a></li>
    <li class="nav-section">Resources</li>
      <li><a href="https://sel4.systems/Info/Docs/seL4-manual-latest.pdf">seL4 Manual</a></li>
      <li><a href="/projects/sel4/api-doc.html">seL4 API reference</a></li>
      <li><a href="/Tutorials/how-to">How to: a quick solutions guide</a></li>
      <li><a href="/projects/sel4-tutorials/debugging-guide">Debugging guide</a></li>
      <li><a href="/Resources#contact">Help contacts</a></li>
  </ul>
</div>

  </div>
  <div class="content col-sm-8 col-md-6 col-lg-7 main">

    <h1 id="how-to-a-quick-solutions-guide"><em>How to:</em> A quick solutions guide</h1>
<p>This guide provides links to tutorial solutions as quick references for seL4 calls and methods.</p>

<h2 id="the-sel4-kernel">The seL4 kernel</h2>

<h3 id="capabilities"><a href="capabilities?tut_expand">Capabilities</a></h3>

<ul>
  <li><a href="capabilities?tut_expand#how-big-is-your-cspace">Calculate the size of a CSpace</a></li>
  <li><a href="capabilities?tut_expand#copy-a-capability-between-cslots">Copy a capability between CSlots</a></li>
  <li><a href="capabilities?tut_expand#how-do-you-delete-capabilities">Delete a capability</a></li>
  <li><a href="capabilities?tut_expand#suspend-a-thread">Suspend a thread</a></li>
</ul>

<h3 id="untyped"><a href="untyped?tut_expand">Untyped</a></h3>

<ul>
  <li><a href="untyped?tut_expand#create-an-untyped-capability">Create an untyped capability</a></li>
  <li><a href="untyped?tut_expand#create-a-tcb-object">Create a TCB object</a></li>
  <li><a href="untyped?tut_expand#create-an-endpoint-object">Create an endpoint object</a></li>
  <li><a href="untyped?tut_expand#create-a-notification-object">Create a notification object</a></li>
  <li><a href="untyped?tut_expand#delete-the-objects">Delete an object</a></li>
</ul>

<h3 id="mapping"><a href="mapping?tut_expand">Mapping</a></h3>
<ul>
  <li><a href="mapping?tut_expand#map-a-page-directory">Map a page directory</a></li>
  <li><a href="mapping?tut_expand#map-a-page-table">Map a page table</a></li>
  <li><a href="mapping?tut_expand#remap-a-page">Remap a page</a></li>
  <li><a href="mapping?tut_expand#unmapping-pages">Unmap a page</a></li>
</ul>

<h3 id="threads"><a href="threads?tut_expand">Threads</a></h3>
<ul>
  <li><a href="threads?tut_expand#configure-a-tcb">Configure a TCB</a></li>
  <li><a href="threads?tut_expand#change-priority-via-sel4_tcb_setpriority">Change the priority of a thread</a></li>
  <li><a href="threads?tut_expand#set-initial-register-state">Set initial register state</a></li>
  <li><a href="threads?tut_expand#start-the-thread">Start the thread</a></li>
  <li><a href="threads?tut_expand#passing-arguments">Set the arguments of a thread</a></li>
  <li><a href="threads?tut_expand#resolving-a-fault">Resolve a fault</a></li>
</ul>

<h3 id="ipc"><a href="ipc?tut_expand">IPC</a></h3>
<ul>
  <li><a href="ipc?tut_expand#use-capability-transfer-to-send-the-badged-capability">Use capability transfer to send the badged capability</a></li>
  <li><a href="ipc?tut_expand#get-a-message">Get a message</a></li>
  <li><a href="ipc?tut_expand#reply-and-wait">Reply and wait</a></li>
  <li><a href="ipc?tut_expand#save-a-reply-and-store-reply-capabilities">Save a reply and store reply capabilities</a></li>
</ul>

<h3 id="notifications"><a href="notifications?tut_expand">Notifications</a></h3>
<ul>
  <li><a href="notifications?tut_expand#set-up-shared-memory">Set up shared memory</a></li>
  <li><a href="notifications?tut_expand#signal-the-producers-to-go">Signalling</a></li>
  <li><a href="notifications?tut_expand#differentiate-signals">Differentiate signals</a></li>
</ul>

<h3 id="interrupts"><a href="interrupts?tut_expand">Interrupts</a></h3>
<ul>
  <li><a href="interrupts?tut_expand#invoke-irq-control">Invoke IRQ control</a></li>
  <li><a href="interrupts?tut_expand#set-ntfn">Set NTFN</a></li>
  <li><a href="interrupts?tut_expand#acknowledge-an-interrupt">Acknowledge an interrupt</a></li>
</ul>

<h3 id="fault-handling"><a href="fault-handlers?tut_expand">Fault handling</a></h3>
<ul>
  <li><a href="fault-handlers?tut_expand#setting-up-the-endpoint-to-be-used-for-thread-fault-ipc-messages">Set up an endpoint for thread fault IPC messages</a></li>
  <li><a href="fault-handlers?tut_expand#receiving-the-ipc-message-from-the-kernel">Receive an IPC message from the kernel</a></li>
  <li><a href="fault-handlers?tut_expand#finding-out-information-about-the-generated-thread-fault">Get information about a thread fault</a></li>
  <li><a href="fault-handlers?tut_expand#handling-a-thread-fault">Handle a thread fault</a></li>
  <li><a href="fault-handlers?tut_expand#resuming-a-faulting-thread">Resume a faulting thread</a></li>
</ul>

<h2 id="mcs-extensions"><a href="mcs?tut_expand">MCS Extensions</a></h2>
<ul>
  <li><a href="mcs?tut_expand#periodic-threads">Set up a periodic thread</a></li>
  <li><a href="mcs?tut_expand#unbinding-scheduling-contexts">Unbind a scheduling context</a></li>
  <li><a href="mcs?tut_expand#sporadic-threads">Experiment with sporadic tasks</a></li>
  <li><a href="mcs?tut_expand#passive-servers">Use passive servers</a></li>
  <li><a href="mcs?tut_expand#configuring-a-fault-endpoint-on-the-mcs-kernel">Configure fault endpoints</a></li>
</ul>

<h2 id="dynamic-libraries"><a href="libraries-1?tut_expand">Dynamic libraries</a></h2>

<h3 id="initialisation---threading"><a href="libraries-1?tut_expand">Initialisation  &amp; threading</a></h3>
<ul>
  <li><a href="libraries-1?tut_expand#obtain-bootinfo">Obtain BootInfo</a></li>
  <li><a href="libraries-1?tut_expand#initialise-simple">Initialise simple</a></li>
  <li><a href="libraries-1?tut_expand#use-simple-to-print-bootinfo">Use simple to print BootInfo</a></li>
  <li><a href="libraries-1?tut_expand#initialise-an-allocator">Initialise an allocator</a></li>
  <li><a href="libraries-1?tut_expand#obtain-a-generic-allocation-interface-vka">Obtain a generic allocation interface (vka)</a></li>
  <li><a href="libraries-1?tut_expand#find-the-cspace-root-cap">Find the CSpace root cap</a></li>
  <li><a href="libraries-1?tut_expand#find-the-vspace-root-cap">Find the VSpace root cap</a></li>
  <li><a href="libraries-1?tut_expand#allocate-a-tcb-object">Allocate a TCB Object</a></li>
  <li><a href="libraries-1?tut_expand#configure-the-new-tcb">Configure the new TCB</a></li>
  <li><a href="libraries-1?tut_expand#name-the-new-tcb">Name the new TCB</a></li>
  <li><a href="libraries-1?tut_expand#set-the-instruction-pointer">Set the instruction pointer</a></li>
  <li><a href="libraries-1?tut_expand#set-the-stack-pointer">Set the stack pointer</a></li>
  <li><a href="libraries-1?tut_expand#write-the-registers">Write the registers</a></li>
  <li><a href="libraries-1?tut_expand#start-the-new-thread">Start the new thread</a></li>
  <li><a href="libraries-1?tut_expand#print-something">Print</a></li>
</ul>

<h3 id="ipc-1"><a href="libraries-2?tut_expand">IPC</a></h3>
<ul>
  <li><a href="libraries-2?tut_expand#allocate-an-ipc-buffer">Allocate an IPC buffer</a></li>
  <li><a href="libraries-2?tut_expand#allocate-a-page-table">Allocate a page table</a></li>
  <li><a href="libraries-2?tut_expand#map-a-page-table">Map a page table</a></li>
  <li><a href="libraries-2?tut_expand#map-a-page">Map a page</a></li>
  <li><a href="libraries-2?tut_expand#allocate-an-endpoint">Allocate an endpoint</a></li>
  <li><a href="libraries-2?tut_expand#badge-an-endpoint">Badge an endpoint</a></li>
  <li><a href="libraries-2?tut_expand#message-registers">Set a message register</a></li>
  <li><a href="libraries-2?tut_expand#ipc">Send and wait for a reply</a></li>
  <li><a href="libraries-2?tut_expand#receive-a-reply">Receive a reply</a></li>
  <li><a href="libraries-2?tut_expand#receive-an-ipc">Receive an IPC</a></li>
  <li><a href="libraries-2?tut_expand#validate-the-message">Validate a message</a></li>
  <li><a href="libraries-2?tut_expand#write-the-message-registers">Write the message registers</a></li>
  <li><a href="libraries-2?tut_expand#reply-to-a-message">Reply to a message</a></li>
</ul>

<h3 id="processes--elf-loading"><a href="libraries-3?tut_expand">Processes &amp; Elf loading</a></h3>
<ul>
  <li><a href="libraries-3?tut_expand#virtual-memory-management">Create a VSpace object</a></li>
  <li><a href="libraries-3?tut_expand#configure-a-process">Configure a process</a></li>
  <li><a href="libraries-3?tut_expand#get-a-cspacepath">Get a CSpace path</a></li>
  <li><a href="libraries-3?tut_expand#badge-a-capability">Badge a capability</a></li>
  <li><a href="libraries-3?tut_expand#spawn-a-process">Spawn a process</a></li>
  <li><a href="libraries-3?tut_expand#receive-a-message">Receive a message</a></li>
  <li><a href="libraries-3?tut_expand#send-a-reply">Send a reply</a></li>
  <li><a href="libraries-3?tut_expand#client-call">Initiate communications by using seL4_Call</a></li>
</ul>

<h3 id="timer"><a href="libraries-4?tut_expand">Timer</a></h3>
<ul>
  <li><a href="libraries-4?tut_expand#allocate-a-notification-object">Allocate a notification object</a></li>
  <li><a href="libraries-4?tut_expand#initialise-the-timer">Initialise a timer</a></li>
  <li><a href="libraries-4?tut_expand#use-the-timer">Use a timer</a></li>
  <li><a href="libraries-4?tut_expand#handle-the-interrupt">Handle an interrupt</a></li>
  <li><a href="libraries-4?tut_expand#destroy-the-timer">Destroy a timer</a></li>
</ul>

<h2 id="camkes"><a href="hello-camkes-0?tut_expand">CAmkES</a></h2>

<h3 id="a-basic-camkes-application"><a href="hello-camkes-1?tut_expand">A basic CAmkES application</a></h3>
<ul>
  <li><a href="hello-camkes-1?tut_expand#define-an-instance-in-the-composition-section-of-the-adl">Define an instance in the composition section of the ADL</a></li>
  <li><a href="hello-camkes-1?tut_expand#add-a-connection">Add a connection</a></li>
  <li><a href="hello-camkes-1?tut_expand#define-an-interface">Define an interface</a></li>
  <li><a href="hello-camkes-1?tut_expand#implement-a-rpc-function">Implement an RPC function</a></li>
  <li><a href="hello-camkes-1?tut_expand#invoke-a-rpc-function">Invoke a RPC function</a></li>
</ul>

<h3 id="events-in-camkes"><a href="hello-camkes-2?tut_expand">Events in CAmkES</a></h3>
<ul>
  <li><a href="hello-camkes-2?tut_expand#specify-an-events-interface">Specify an events interface</a></li>
  <li><a href="hello-camkes-2?tut_expand#add-connections">Add connections</a></li>
  <li><a href="hello-camkes-2?tut_expand#wait-for-data-to-become-available">Wait for data to become available</a></li>
  <li><a href="hello-camkes-2?tut_expand#signal-that-data-is-available">Signal that data is available</a></li>
  <li><a href="hello-camkes-2?tut_expand#register-a-callback-handler">Register a callback handler</a></li>
  <li><a href="hello-camkes-2?tut_expand#specify-dataport-interfaces">Specify dataport interfaces</a></li>
  <li><a href="hello-camkes-2?tut_expand#specify-dataport-connections">Specify dataport connections</a></li>
  <li><a href="hello-camkes-2?tut_expand#copy-strings-to-an-untyped-dataport">Copy strings to an untyped dataport</a></li>
  <li><a href="hello-camkes-2?tut_expand#read-the-reply-data-from-a-typed-dataport">Read the reply data from a typed dataport</a></li>
  <li><a href="hello-camkes-2?tut_expand#send-data-using-dataports">Send data using dataports</a></li>
  <li><a href="hello-camkes-2?tut_expand#read-data-from-an-untyped-dataport">Read data from an untyped dataport</a></li>
  <li><a href="hello-camkes-2?tut_expand#put-data-into-a-typed-dataport">Put data into a typed dataport</a></li>
  <li><a href="hello-camkes-2?tut_expand#read-data-from-a-typed-dataport">Read data from a typed dataport</a></li>
  <li><a href="hello-camkes-2?tut_expand#set-component-priorities">Set component priorities</a></li>
  <li><a href="hello-camkes-2?tut_expand#restrict-access-to-dataports">Restrict access to dataports</a></li>
  <li><a href="hello-camkes-2?tut_expand#test-the-read-and-write-permissions-on-the-dataport">Test the read and write permissions on the dataport</a></li>
</ul>

<h3 id="camkes-timer"><a href="hello-camkes-timer?tut_expand">CAmkES Timer</a></h3>
<ul>
  <li><a href="hello-camkes-timer?tut_expand#instantiate-a-timer-and-timerbase">Instantiate a Timer and Timerbase</a></li>
  <li><a href="hello-camkes-timer?tut_expand#connect-a-timer-driver-component">Connect a timer driver component</a></li>
  <li><a href="hello-camkes-timer?tut_expand#configure-a-timer-hardware-component-instance">Configure a timer hardware component instance</a></li>
  <li><a href="hello-camkes-timer?tut_expand#call-into-a-supplied-driver-to-handle-the-interrupt">Call into a supplied driver to handle the interrupt</a></li>
  <li><a href="hello-camkes-timer?tut_expand#stop-a-timer">Stop a timer</a></li>
  <li><a href="hello-camkes-timer?tut_expand#acknowledge-an-interrupt">Acknowledge an interrupt</a></li>
  <li><a href="hello-camkes-timer?tut_expand#get-a-timer-handler">Get a timer handler</a></li>
  <li><a href="hello-camkes-timer?tut_expand#start-a-timer">Start a timer</a></li>
  <li><a href="hello-camkes-timer?tut_expand#implement-a-rpc-interface">Implement an RPC interface</a></li>
  <li><a href="hello-camkes-timer?tut_expand#set-a-timer-interrupt">Set a timer interrupt</a></li>
  <li><a href="hello-camkes-timer?tut_expand#instantiate-a-timerdtb-component">Instantiate a TimerDTB component</a></li>
  <li><a href="hello-camkes-timer?tut_expand#connect-interfaces-using-the-sel4dtbhardware-connector">Connect interfaces using the seL4DTBHardware connector</a></li>
  <li><a href="hello-camkes-timer?tut_expand#configure-the-timerdtb-component">Configure the TimerDTB component</a></li>
  <li><a href="hello-camkes-timer?tut_expand#handle-the-interrupt">Handle the interrupt</a></li>
  <li><a href="hello-camkes-timer?tut_expand#stop-the-timer">Stop the timer</a></li>
</ul>

<h3 id="camkes-vm-linux"><a href="camkes-vm-linux?tut_expand">CAmkES VM Linux</a></h3>
<ul>
  <li><a href="camkes-vm-linux?tut_expand#adding-a-program">Add a program</a></li>
  <li><a href="camkes-vm-linux?tut_expand#adding-a-kernel-module">Add a kernel module</a></li>
  <li><a href="camkes-vm-linux?tut_expand#creating-a-hypercall">Create a hypercall</a></li>
</ul>

<h3 id="camkees-cross-vm-connectors"><a href="camkes-vm-crossvm?tut_expand">CAmkeES Cross VM Connectors</a></h3>
<ul>
  <li><a href="camkes-vm-crossvm?tut_expand#add-modules-to-the-guest">Add modules to the guest</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#define-interfaces-in-the-vmm">Define interfaces in the VMM</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#define-the-component-interface">Define the component interface</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#instantiate-the-print-server">Instantiate the print server</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#implement-the-print-server">Implement the print server</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#implement-the-vmm-side-of-the-connection">Implement the VMM side of the connection</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#update-the-build-system">Update the build system</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#add-interfaces-to-the-guest">Add interfaces to the Guest</a></li>
  <li><a href="camkes-vm-crossvm?tut_expand#create-a-process">Create a process</a></li>
</ul>


<p style="text-align: right;">

</p>


  </div>

  
    
<div class="sidebar-toc hidden-xs hidden-sm col-md-3 col-lg-3">
    <ul id="toc" class="section-nav">
<li class="toc-entry toc-h2"><a href="#the-sel4-kernel">The seL4 kernel</a>
<ul>
<li class="toc-entry toc-h3"><a href="#capabilities">Capabilities</a></li>
<li class="toc-entry toc-h3"><a href="#untyped">Untyped</a></li>
<li class="toc-entry toc-h3"><a href="#mapping">Mapping</a></li>
<li class="toc-entry toc-h3"><a href="#threads">Threads</a></li>
<li class="toc-entry toc-h3"><a href="#ipc">IPC</a></li>
<li class="toc-entry toc-h3"><a href="#notifications">Notifications</a></li>
<li class="toc-entry toc-h3"><a href="#interrupts">Interrupts</a></li>
<li class="toc-entry toc-h3"><a href="#fault-handling">Fault handling</a></li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#mcs-extensions">MCS Extensions</a></li>
<li class="toc-entry toc-h2"><a href="#dynamic-libraries">Dynamic libraries</a>
<ul>
<li class="toc-entry toc-h3"><a href="#initialisation---threading">Initialisation  &amp; threading</a></li>
<li class="toc-entry toc-h3"><a href="#ipc-1">IPC</a></li>
<li class="toc-entry toc-h3"><a href="#processes--elf-loading">Processes &amp; Elf loading</a></li>
<li class="toc-entry toc-h3"><a href="#timer">Timer</a></li>
</ul>
</li>
<li class="toc-entry toc-h2"><a href="#camkes">CAmkES</a>
<ul>
<li class="toc-entry toc-h3"><a href="#a-basic-camkes-application">A basic CAmkES application</a></li>
<li class="toc-entry toc-h3"><a href="#events-in-camkes">Events in CAmkES</a></li>
<li class="toc-entry toc-h3"><a href="#camkes-timer">CAmkES Timer</a></li>
<li class="toc-entry toc-h3"><a href="#camkes-vm-linux">CAmkES VM Linux</a></li>
<li class="toc-entry toc-h3"><a href="#camkees-cross-vm-connectors">CAmkeES Cross VM Connectors</a></li>
</ul>
</li>
</ul>
</div>

  
</div>
<script src="/assets/js/toggle-markdown.js"></script>

    </main>
    


<footer class="site-footer">

  <h2 class="footer-heading">seL4 docs</h2>

  <div class="footer-col-wrapper">

    <div class="col-md-2">
      



<ul class="social-media-list">
  <li><a href="https://github.com/sel4"><i class="fab fa-github"></i> <span class="username">sel4</span></a></li><li><a href="https://github.com/sel4proj"><i class="fab fa-github"></i> <span class="username">sel4proj</span></a></li>
</ul>

    </div>

    <div class="col-md-8">
      <ul class="list-unstyled">
        <li>
          This site is for displaying seL4 related documentation.  Pull requests are welcome.
        </li>
        
          <li>
            Site last updated: Fri Feb 7 10:17:38 2025 +1100 ee78c8857c
          </li>
          <li>
                Page last updated: Mon Jan 6 18:52:01 2025 +1100 df31e5ccb8
          </li>
        
      </ul>
    </div>
    <div class="col-md-2">
<a href="https://github.com/seL4/docs/blob/master/Tutorials/how-to.md">View page on GitHub</a>
      <br />
      <a href="https://github.com/seL4/docs/edit/master/Tutorials/how-to.md">Edit page on GitHub</a>
      <br />
      <a href="/sitemap">Sitemap</a>
    </div>

  </div>

</footer>

  </body>
</html>
